using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using TMPro;

public class InventoryItem : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    [HideInInspector] public Image image; // 物品的图像组件
    [HideInInspector] public Item item;
    [HideInInspector] public Transform parentAfterDrag; // 记录拖拽前的父级位置
    [HideInInspector] public GameObject countText; // 数量文本
    [HideInInspector] public int count = 1; //默认数量

    private void Start()
    {
        image = transform.GetComponent<Image>();
    }

    public void InitialiseItem(Item newItem)
    {
        countText = transform.GetChild(0).gameObject;
        item = newItem;
        image.sprite = newItem.image;
        // count = Random.Range(1, 4);//随机添加物品数量测试
        RefreshCount();
    }

    public void RefreshCount()
    {
        countText.GetComponent<TextMeshProUGUI>().text = count.ToString();

        //控制数量显示隐藏 大于1才显示
        bool textActive  = count > 1;
        countText.gameObject.SetActive(textActive);
    }

    //开始拖拽时调用
    public void OnBeginDrag(PointerEventData eventData)
    {
        image.raycastTarget = false; // 禁用射线检测，防止拖拽物体遮挡其他UI元素的交互
        parentAfterDrag = transform.parent; // 记录拖拽前的父级位置
        //transform.root 是用来获取当前对象的根物体，这里及是Canvas
        transform.SetParent(transform.root); // 设置拖拽物体的父级为Canvas，以保证拖拽物体在最上层显示
    }

    //拖拽过程中调用
    public void OnDrag(PointerEventData eventData)
    {
        transform.position = Input.mousePosition; // 将拖拽物体的位置设置为鼠标的当前位置
    }

    //拖拽结束时调用
    public void OnEndDrag(PointerEventData eventData)
    {
        image.raycastTarget = true; // 启用射线检测
        transform.SetParent(parentAfterDrag); // 恢复拖拽结束后物品的父级位置
    }
}
